export default {
    data() {
        return {
            // 表格动态高度
            tableHeight: 608,
            // 提交表单--节流
            lastTimestamp: 0,
            previewImage: "",
            //   defaultProfile: require("@/assets/images/default-profile.png")
        };
    },
    methods: {
        /**
         * 获取当前日期
         */
        getDateTime() {
            // 获取当前日期
            let timestamp = Date.parse(new Date());
            let date = new Date(timestamp);
            date.setDate(date.getDate());
            //获取年份
            var Y = date.getFullYear();
            //获取月份
            var M =
                date.getMonth() + 1 < 10
                    ? "0" + (date.getMonth() + 1)
                    : date.getMonth() + 1;
            //获取当日日期
            var D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            let todayDate = Y + "-" + M + "-" + D;
            return todayDate;
        },
        /**
         * 获取表格动态高度
         */
        getTableHeight(reduce = 0) {
            const setHeight = () => {
                // 计算搜索区域高度
                const queryHeight = this.$refs.nxIB?.$el?.clientHeight || 0 + 360;
                // 动态赋值表格高度
                this.tableHeight = document.body.clientHeight - queryHeight - reduce;
            }
            this.$nextTick(() => {
                setHeight();
            });
            // 窗口改变的时候动态赋值高度
            window.onresize = setHeight
        },
        /**
         * 处理数字精度
         * e 输入框的值
         * num 保留的小数位数
         * len 保留的整数位数
         */
        filtersPrecision(e, num = 2, len = 8, min = undefined, max = undefined) {
            try {
                // 求小数位个数
                function countDecimal(str) {
                    var decimalCount = (str.match(/\.\d+/g) || [])
                        .map(function (val) {
                            return val.length - 1;
                        })
                        .reduce(function (a, b) {
                            return Math.max(a, b);
                        }, 0);
                    return decimalCount;
                }

                let val = e.toString();
                const length = countDecimal(val);
                if (length < num) {
                    num = length;
                }
                if (val === undefined || val === null) return;
                if (min !== undefined && val < min) val = min;
                if (max !== undefined && val > max) val = max;

                const valStr = val.toString();
                if (!valStr) return "";

                let [integer, decimal] = valStr.split(".");
                if (!integer && !decimal) return "";
                if (!integer) integer = "0";
                if (!decimal) decimal = "0";

                integer = integer.slice(0, len) || "0";
                decimal = decimal.slice(0, num) || "0";

                return num ? Number(`${integer}.${decimal}`).toFixed(num) : integer;
            } catch (error) { }
        },
        /**
         * 获取处理后的文本
         */
        getDisposeText(content) {
            try {
                const regex = /(<p>)\s*(\S)/g;
                const result = content
                    .replace(
                        regex,
                        (match, p1, p2) => p1 + "&nbsp;".repeat(match.length - 4) + p2
                    )
                    .replace(/<br/g, "<br style='display: none'")
                return result;
            } catch (error) { }
        },
        /**
         * 轮播图数据转换
         * @param {arr} list 图片数组
         * @param {number} type 类型：0首页 1商品 2清洁服务 3积分商品 4搬运服务 5合作伙伴
         * @param {number} status 状态：0启用 1停用 没有不管
         * @param {String} name 轮播图名称 没有不管
         */
        bannerArrChange(list, type, status = null, name = null) {
            const newArr = [];
            list.forEach((val) => {
                const obj = {
                    type,
                    image: val,
                };
                if (status) obj.status = status;
                if (name) obj.name = name;
                newArr.push(obj);
            });
            return newArr;
        },
        /**
         * 节流处理（time秒内点击只有一次生效，点击提交按钮可用）
         * @param time 毫秒
         */
        throttle(time = 2000) {
            const nowTime = new Date().getTime();
            const lastTime = this.lastTimestamp;
            if (nowTime - lastTime > time) {
                this.lastTimestamp = nowTime;
                return true;
            }
            return false;
        },
        /**
         * 深拷贝
         * @param obj 要拷贝的对象或数组
         */
        deepCopy(obj) {
            // 如果obj是null或不是对象/数组，直接返回该值
            if (obj === null || typeof obj !== "object") return obj;

            // 根据obj的类型创建新对象/数组
            const newObj = Array.isArray(obj) ? [] : {};

            // 遍历obj的所有属性/元素，递归调用deepCopy方法进行深拷贝
            for (let key in obj) {
                newObj[key] = this.deepCopy(obj[key]);
            }

            return newObj;
        },
    }
};
